===== SLIDE 1 ===== 单元2 Hive的部署与应用 ===== SLIDE 2 ===== 学习目标/Target 熟悉Beeline,能够运用Beeline提供的命令选项和交互式命令实现对Hive的连接与操作。 掌握Hive的部署,能够根据实际应用需求选择并部署不同模式的Hive环境。 掌握Hive On Tez,能够独立完成Tez的安装并将其配置为Hive的执行引擎。 了解使用DataGrip操作Hive的方法,能够使用DataGrip连接HiveServer2实现对Hive的访问与操作。 ===== SLIDE 3 ===== 单元概述/ Summary “工欲善其事,必先利其器。”这句话强调,完成一项工作之前,应先准备好相应的工具。同样,要真正使用Hive完成数据仓库建设与数据分析任务,仅理解相关概念还远远不够,还需要搭建可运行的Hive环境,并掌握常用访问工具的使用方法。本单元将带领读者部署不同模式的Hive环境,并通过Beeline和DataGrip访问和操作Hive,为后续开展HiveQL编写、数据管理与数据分析奠定实践基础。 ===== SLIDE 4 ===== 目录/Contents 01 02 03 任务:认识Beeline 任务:基于内嵌模式部署Hive 任务:基于本地模式部署Hive ===== SLIDE 5 ===== 目录/Contents 04 05 06 任务:基于远程模式部署Hive 任务:配置Hive On Tez 任务:使用DataGrip操作Hive ===== SLIDE 6 ===== 任务:认识Beeline 2.1 ===== SLIDE 7 ===== 2.1 任务:认识Beeline 熟悉Beeline,能够运用Beeline提供的命令选项和交互式命令实现对Hive的连接与操作。 学习目标 ===== SLIDE 8 ===== 在部署Hive之前,为便于后续验证部署效果,将通过Hive自带的客户端工具Beeline进行连接测试。因此,在介绍Hive部署过程前,先对Beeline的基本概念与使用方式进行讲解。 2.1 任务:认识Beeline ===== SLIDE 9 ===== 在Hive的体系架构中,客户端是用户提交查询语句并获取执行结果的直接交互入口。自Hive 2.0起,Beeline逐渐取代旧版Hive CLI,成为官方推荐的标准命令行客户端工具。在Hive 4.1.0中,Beeline已完全取代Hive CLI。 2.1 任务:认识Beeline ===== SLIDE 10 ===== Beeline基于JDBC协议构建,专为连接HiveServer2设计,支持远程访问、身份认证和会话管理等特性,是使用Hive进行交互式查询的主要通道。与Hive CLI不同,Beeline并不会在本地进程中直接启动Hive引擎,而是作为一个轻量级的远程客户端运行。用户在Beeline中编写并提交HiveQL语句后,相关请求会被发送至HiveServer2。 2.1 任务:认识Beeline ===== SLIDE 11 ===== 用户可以通过Hive安装目录下的bin目录中的脚本文件beeline启动Beeline。Beeline提供了丰富的命令选项和交互式命令,用于灵活配置连接行为及执行管理操作,具体介绍如下。 交互式命令 命令 选项 2.1 任务:认识Beeline ===== SLIDE 12 ===== 1. 命令选项 命令选项在执行脚本文件beeline启动Beeline时使用,用于指定连接地址、认证方式、初始化参数等信息,常用命令选项如表。 2.1 任务:认识Beeline 命令选项 语法格式 描述 -u -u url 用于指定连接HiveServer2的JDBC连接地址 -n -n user 用于指定连接HiveServer2时的认证用户。在未启用安全认证机制时,可填写任意用户名,但建议填写具备HDFS访问权限的有效用户,以保障查询任务在执行过程中拥有对底层数据的读写能力。若未指定认证用户,则默认使用用户anonymous。 ===== SLIDE 13 ===== 1. 命令选项 2.1 任务:认识Beeline 命令选项 语法格式 描述 -p -p pwd 用于指定认证用户对应的密码。在未启用安全认证机制时,认证用户的密码为空 -c -c name 用于通过名称为beeline-site.xml的配置文件加载预定义的JDBC连接地址 --hiveconf --hiveconf property=value 用于在当前会话中动态设置Hive配置参数,以覆盖配置文件hive-site.xml中同名的配置参数,适用于临时调整配置,无需修改配置文件本身。动态设置的作用范围仅限于当前客户端会话,在会话断开后自动失效 ===== SLIDE 14 ===== 1. 命令选项 2.1 任务:认识Beeline 命令选项 语法格式 描述 -e -e query 用于在启动Beeline时执行指定的单条HiveQL语句。执行完成后,Beeline自动退出,不进入交互界面 -f -f file_path 用于在启动Beeline时执行指定Hive脚本文件中的所有HiveQL语句。执行完成后,Beeline自动退出,不进入交互界面。Hive脚本文件的扩展名通常为hql -w -w file_path 用于从指定文件中读取认证用户的密码,避免使用-p输入密码时暴露明文密码 ===== SLIDE 15 ===== 1. 命令选项 2.1 任务:认识Beeline 命令选项 语法格式 描述 --outputformat --outputformat=format 用于控制查询结果的输出格式,支持的格式如下。 table:表格形式显示(默认) vertical:垂直列出每条记录的每个字段,适用于字段较多或内容较长的结果 csv2:CSV格式显示 tsv2:TSV格式显示 json:JSON格式显示 --showHeader --showHeader=boolean 用于控制查询结果中是否显示表头。true(默认)表示显示;false表示隐藏 ===== SLIDE 16 ===== 1. 命令选项 2.1 任务:认识Beeline 命令选项 语法格式 描述 --truncateTable --truncateTable=boolean 用于控制查询结果中字段内容过宽时,是否截断显示。true表示截断;false(默认)表示不截断 --incremental --incremental=boolean 用于控制查询结果是否以流式方式边查询边显示结果,以降低客户端内存使用。true表示查询结果逐行显示,不会一次性加载所有数据到内存,适用于大结果集;false(默认)表示等待所有结果查询完成并缓存在内存后一次性展示,适用于小结果集 ===== SLIDE 17 ===== 1. 命令选项 2.1 任务:认识Beeline 命令选项 语法格式 描述 --silent --silent=boolean 用于控制是否启用静默模式。true表示启用静默模式,仅输出查询结果,不包含额外日志信息或提示内容;false(默认)表示关闭静默模式,在输出查询结果的同时输出额外日志信息或提示内容 --verbose --verbose=boolean 用于控制查询结果是否显示详细的调试信息。true表示显示;false(默认)表示不显示 --help --help 用于显示帮助信息。执行完成后,Beeline自动退出,不进入交互界面 ===== SLIDE 18 ===== beeline.hs2.jdbc.url.name url 配置文件beeline-site.xml需用户手动创建,并存放于Hive安装目录的conf目录中,该文件的基本内容如下。 基本内容 2.1 任务:认识Beeline 1. 命令选项 用于指定HiveServer2对应的JDBC连接地址 用于定义连接的唯一标识名称 ===== SLIDE 19 ===== 2. 交互式命令 互式命令在Beeline成功启动后于交互界面中使用,用于连接管理、元数据查询、执行脚本等操作,常用交互式命令如表。 2.1 任务:认识Beeline 交互式命令 语法格式 描述 !connect !connect url 用于指定连接 HiveServer2的JDBC连接地址 !close !close 用于关闭当前连接 !closeall !closeall 用于关闭所有连接 ===== SLIDE 20 ===== 2. 交互式命令 2.1 任务:认识Beeline 交互式命令 语法格式 描述 !list !list 用于查看所有连接,并显示每个连接的编号 !go !go id 用于通过编号切换至已建立的某个连接 !quit !quit 用于退出Beeline !run !run file_path 与命令选项-f的作用相同 !script !script file_path 用于开启录制,将当前会话后续输入的所有命令都保存到指定文件中。若要停止录制,则直接执行!script即可 ===== SLIDE 21 ===== 2. 交互式命令 2.1 任务:认识Beeline 交互式命令 语法格式 描述 !set !set property=value 与命令选项--hiveconf的作用相同 !sh !sh cmd 用于在Beeline中直接执行Shell命令 !history !history 用于查看历史命令 !outputformat !outputformat format 与命令选项--outputformat的作用相同 !tables !tables 用于查看当前数据库中的所有表 !describe !describe table 用于查看指定表的结构 !help !help 用于显示帮助信息 ===== SLIDE 22 ===== 1 在启动Beeline时,通过命令选项-u直接指定HiveServer2的JDBC连接地址。 2 先启动Beeline,进入交互界面后,再通过交互式命令!connect指定HiveServer2的JDBC连接地址。 通过学习Beeline的命令选项与交互式命令,可以总结出使用Beeline连接HiveServer2的两种方式。 2.1 任务:认识Beeline 2. 交互式命令 ===== SLIDE 23 ===== jdbc:hive2://host:port[/database] 关于HiveServer2连接地址的格式如下。 具体格式 2.1 任务:认识Beeline 用于指定HiveServer2所在服务器的IP地址或主机名 用于指定HiveServer2的端口号 2. 交互式命令 用于指定当前会话默认使用的数据库 ===== SLIDE 24 ===== 任务:基于内嵌模式部署Hive 2.2 ===== SLIDE 25 ===== 2.2 任务:基于内嵌模式部署Hive 掌握Hive的部署,能够完成基于内嵌模式部署Hive的操作。 学习目标 ===== SLIDE 26 ===== 内嵌模式是最简单的Hive部署方式,其核心特征是元数据存储与服务组件高度集成。在内嵌模式下,无须启动HiveServer2。同时,Metastore以嵌入方式运行,并使用嵌入式Derby数据库存储元数据。 2.2 任务:基于内嵌模式部署Hive ===== SLIDE 27 ===== 内嵌模式主要适用于本地单用户开发与功能验证等轻量级场景,不适用于多用户协作环境。其根本原因在于,嵌入式Derby数据库仅支持单会话访问,无法满足多个Hive客户端并发连接的需求,也不具备元数据服务的共享能力。 2.2 任务:基于内嵌模式部署Hive ===== SLIDE 28 ===== 接下来,以虚拟机Node03为例,演示如何基于内嵌模式部署Hive,具体操作步骤如下。 2.2 任务:基于内嵌模式部署Hive ===== SLIDE 29 ===== 2.2 任务:基于内嵌模式部署Hive STEP 01 启动Hadoop集群 在虚拟机Node01执行下列命令启动Hadoop集群。 start-dfs.sh start-yarn.sh 启动HDFS集群 启动YARN集群 STEP 02 上传Hive安装包 将Hive安装包apache-hive-4.1.0-bin.tar.gz上传到虚拟机Node03的/export/software目录中。 ===== SLIDE 30 ===== 2.2 任务:基于内嵌模式部署Hive STEP 03 安装Hive 将Hive安装至虚拟机Node03的/export/servers目录,具体命令如下。 tar -zxvf /export/software/apache-hive-4.1.0-bin.tar.gz -C /export/servers/ STEP 04 重命名目录 将Hive的安装目录重命名为hive-4.1.0,具体命令如下。 mv /export/servers/apache-hive-4.1.0-bin/ /export/servers/hive-4.1.0 ===== SLIDE 31 ===== 2.2 任务:基于内嵌模式部署Hive STEP 05 配置Hive 在Hive安装目录的conf目录下编辑Hive配置文件hive-site.xml,具体命令如下。 vi /export/servers/hive-4.1.0/conf/hive-site.xml ===== SLIDE 32 ===== 2.2 任务:基于内嵌模式部署Hive STEP 05 配置Hive 在配置文件hive-site.xml中添加如下内容。 点击查看 ===== SLIDE 33 ===== 2.2 任务:基于内嵌模式部署Hive STEP 06 配置Hive系统环境变量 为了便于Hive的管理和使用,需要在虚拟机Node03中配置Hive系统环境变量。在虚拟机Node03中编辑系统环境变量文件profile,具体命令如下。 vi /etc/profile 上述命令执行完成后,在系统环境变量文件profile的末尾添加如下内容。 export HIVE_HOME=/export/servers/hive-4.1.0 export PATH=$HIVE_HOME/bin:$PATH ===== SLIDE 34 ===== 2.2 任务:基于内嵌模式部署Hive STEP 07 初始化系统环境变量 初始化虚拟机的系统环境变量,使系统环境变量文件profile中添加的内容生效,在虚拟机Node03执行如下命令。 source /etc/profile ===== SLIDE 35 ===== 2.2 任务:基于内嵌模式部署Hive STEP 08 初始化Hive元数据 在嵌入式Derby数据库中完成Hive元数据的初始化操作,构建Hive运行所需的元数据表结构,具体命令如下。 schematool -dbType derby -initSchema 上述命令执行完成后,若输出“Initialization script completed”,则说明已在嵌入式Derby数据库中成功完成Hive元数据的初始化。 ===== SLIDE 36 ===== 2.2 任务:基于内嵌模式部署Hive STEP 09 操作Hive 在内嵌模式下,当用户通过Beeline连接HiveServer2操作Hive时,由于HiveServer2并非作为独立JVM进程运行,而是以嵌入方式与Beeline共处同一JVM进程,所以无须在连接地址中指定主机名和端口号,相应地也无法指定默认访问的数据库。 通过Beeline连接HiveServer2,在虚拟机Node03执行如下命令。 beeline -u jdbc:hive2:// -n root 上述命令执行完成后,会在当前目录下生成一个名为derby.log的文件,主要用于记录嵌入式Derby数据库的运行过程、错误信息和调试日志。 ===== SLIDE 37 ===== 2.2 任务:基于内嵌模式部署Hive STEP 09 操作Hive 当Beeline成功连接HiveServer2后,将自动进入交互界面,如图。 ===== SLIDE 38 ===== 任务:基于本地模式部署Hive 2.3 ===== SLIDE 39 ===== 2.3 任务:基于本地模式部署Hive 学习目标 掌握Hive的部署,能够完成基于本地模式部署Hive的操作。 ===== SLIDE 40 ===== 本地模式与内嵌模式在部署方式上具有一定相似性,适用于开发与测试环境。但相较于内嵌模式,本地模式的核心优势在于实现了元数据管理的独立化。在本地模式下,元数据不再保存在嵌入式Derby数据库中,而是迁移至外部关系型数据库(如MySQL、PostgreSQL等),从而摆脱了单会话访问的限制,支持多用户并发访问元数据服务。 2.3 任务:基于本地模式部署Hive ===== SLIDE 41 ===== 在本地模式下,由于Hive涉及多会话访问,为实现统一的会话管理,通常将HiveServer2作为独立的JVM进程启动,而Metastore仍然以嵌入方式运行。 2.3 任务:基于本地模式部署Hive ===== SLIDE 42 ===== HiveServer2支持前台启动和后台启动两种方式,具体介绍如下。 2.3 任务:基于本地模式部署Hive 后台 启动 前台 启动 ===== SLIDE 43 ===== 1.前台启动 前台启动是指HiveServer2在当前终端前台运行,会占用对应的终端窗口,且运行日志会实时输出到对应的终端中。若需终止HiveServer2,则用户可通过“Ctrl + C ”组合键或关闭终端窗口实现。 前台启动HiveServer2的命令如下。 2.3 任务:基于本地模式部署Hive hive --service hiveserver2 ===== SLIDE 44 ===== 2.后台启动 后台启动是指HiveServer2作为后台进程运行(进程名为RunJar),不占用终端窗口,且在关闭终端后依然保持运行。在后台启动下,运行日志不会实时输出到终端。当HiveServer2启动完成后会返回其对应的进程ID,用户可根据该ID使用kill命令手动终止HiveServer2 的进程。 后台启动HiveServer2的命令如下。 2.3 任务:基于本地模式部署Hive hive --service hiveserver2 & ===== SLIDE 45 ===== 2.后台启动 在实际使用中,后台启动HiveServer2时通常需配合日志重定向,将日志输出至指定文件,以便持久化存储和后续问题排查,示例命令如下。 2.3 任务:基于本地模式部署Hive nohup hive --service hiveserver2 > /export/data/hiveserver2.log 2>&1 & 需要注意的是,日志重定向时,若指定的文件不存在,系统会自动创建,但文件所在的目录必须事先创建,否则命令将执行失败。 ===== SLIDE 46 ===== 本任务演示基于本地模式部署Hive时,将采用MySQL存储Hive元数据,并沿用前文内嵌模式下已安装的Hive。接下来,将以虚拟机Node03为例,演示MySQL 8.4的安装及Hive本地模式的部署,具体操作如下。 2.3 任务:基于本地模式部署Hive 2.后台启动 ===== SLIDE 47 ===== STEP 01 安装MySQL 在虚拟机Node03中在线安装MySQL,具体操作如下。 (1)为确保系统依赖库为最新版本,避免后续安装MySQL时出现兼容性问题,需将系统中已安装的所有软件包更新至最新版本,具体命令如下。 dnf update -y 2.3 任务:基于本地模式部署Hive 2.后台启动 ===== SLIDE 48 ===== STEP 01 安装MySQL (2)安装适用于CentOS Stream 9的MySQL 8.4社区版仓库配置,具体命令如下。 dnf install -y https://dev.mysql.com/get/mysql84-community-release-el9-2.noarch.rpm 2.3 任务:基于本地模式部署Hive 2.后台启动 ===== SLIDE 49 ===== STEP 01 安装MySQL (3)安装MySQL社区版服务器,具体命令如下。 dnf install -y mysql-community-server 2.3 任务:基于本地模式部署Hive 2.后台启动 ===== SLIDE 50 ===== STEP 01 安装MySQL (4)启动MySQL服务并设置开机自动启动,具体命令如下。 systemctl enable --now mysqld 2.3 任务:基于本地模式部署Hive 2.后台启动 ===== SLIDE 51 ===== STEP 01 安装MySQL (5)获取MySQL为自带的root用户生成的初始密码,具体命令如下。 grep 'temporary password' /var/log/mysqld.log 2.3 任务:基于本地模式部署Hive 2.后台启动 ===== SLIDE 52 ===== STEP 01 安装MySQL 上述命令执行完成后的效果如图。 2.3 任务:基于本地模式部署Hive 2.后台启动 ===== SLIDE 53 ===== STEP 01 安装MySQL (6)运行MySQL的安全向导,完成安全配置的初始化,具体命令如下。 mysql_secure_installation 2.3 任务:基于本地模式部署Hive 2.后台启动 ===== SLIDE 54 ===== STEP 01 安装MySQL 上述命令执行完成后,会依次引导用户完成以下安全配置。 2.3 任务:基于本地模式部署Hive 2.后台启动 1 Enter password for user root: New password: Re-enter new password: 再次输入新密码以确认。 输入root用户的初始密码。 2 3 输入root用户的新密码。 Change the password for root: 输入y或Y表示重新修改刚设置的新密码,输入其他任意内容则表示保留设置的新密码。 4 ===== SLIDE 55 ===== STEP 01 安装MySQL 上述命令执行完成后,会依次引导用户完成以下安全配置。 2.3 任务:基于本地模式部署Hive 2.后台启动 5 Remove anonymous users: Disallow root login remotely: Remove test database and access to it: 输入y或Y表示删除默认创建的test数据库,输入其他任意内容则表示保留。 输入y或Y表示删除匿名用户,输入其他任意内容则表示保留匿名用户。 6 7 输入y或Y表示禁止root用户远程登录,输入其他任意内容则表示允许。 Reload privilege tables now: 输入y或Y表示重新加载权限表以使上述更改生效,输入其他任意内容则表示暂不生效。 8 ===== SLIDE 56 ===== STEP 01 安装MySQL 上述操作完成后,读者可通过root用户登录MySQL,验证密码是否修改成功,具体命令如下。 mysql -u root -p 2.3 任务:基于本地模式部署Hive 2.后台启动 上述命令执行完成后,在出现提示信息“Enter password:”时,输入之前设置的新密码。若成功进入MySQL命令行界面,则说明密码已修改成功。 ===== SLIDE 57 ===== STEP 01 安装MySQL (7)为了支持通过远程方式登录MySQL,这里在MySQL中创建一个名为itcast的远程用户并为其分配权限。在MySQL命令行界面执行下列命令。 CREATE USER 'itcast'@'%' IDENTIFIED BY 'Itcast@2025'; GRANT ALL PRIVILEGES ON *.* TO 'itcast'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; 2.3 任务:基于本地模式部署Hive 2.后台启动 创建用户itcast,密码为Itcast@2025,允许在任意主机访问 授予用户itcast对所有数据库和表的全部权限,并允许其授权给其他用户 刷新权限,使配置立即生效 ===== SLIDE 58 ===== STEP 02 启动Hadoop集群 在虚拟机Node01执行下列命令启动Hadoop集群。 start-dfs.sh start-yarn.sh 2.3 任务:基于本地模式部署Hive 2.后台启动 启动YARN集群 启动HDFS集群 ===== SLIDE 59 ===== STEP 03 配置Hive 将已创建的Hive配置文件hive-site.xml重命名为hive-site-derby.xml,使内嵌模式下的Hive配置不再生效,具体命令如下。 mv /export/servers/hive-4.1.0/conf/hive-site.xml \ /export/servers/hive-4.1.0/conf/hive-site-derby.xml 2.3 任务:基于本地模式部署Hive 2.后台启动 ===== SLIDE 60 ===== STEP 03 配置Hive 上述命令执行完成后,在Hive安装目录的conf目录下再次编辑Hive配置文件hive-site.xml,并添加如下内容。 2.3 任务:基于本地模式部署Hive 2.后台启动 点击查看 ===== SLIDE 61 ===== STEP 04 添加MySQL JDBC驱动 将mysql-connector-j-8.4.0.jar添加到Hive安装目录的lib目录中,使Hive能够通过JDBC协议连接MySQL。 2.3 任务:基于本地模式部署Hive 2.后台启动 ===== SLIDE 62 ===== STEP 05 初始化Hive元数据 在MySQL的hive数据库中完成Hive元数据的初始化操作,构建Hive运行所需的元数据表结构,具体命令如下。 2.3 任务:基于本地模式部署Hive 2.后台启动 schematool -dbType mysql -initSchema 上述命令执行完成后,若输出“Initialization script completed”,则说明已在MySQL的hive数据库中成功完成Hive元数据的初始化。 ===== SLIDE 63 ===== STEP 06 启动HiveServer2 以后台启动的运行方式启动HiveServer2,并配置日志重定向,将HiveServer2的日志输出到/export/data目录下的hiveserver2_local.log文件中,具体命令如下。 2.3 任务:基于本地模式部署Hive 2.后台启动 nohup hive --service hiveserver2 > /export/data/hiveserver2_local.log 2>&1 & ===== SLIDE 64 ===== STEP 06 启动HiveServer2 上述命令执行完成后的效果如图。 2.3 任务:基于本地模式部署Hive 2.后台启动 ===== SLIDE 65 ===== STEP 07 操作Hive 通过Beeline连接HiveServer2,在虚拟机Node03执行如下命令。 2.3 任务:基于本地模式部署Hive 2.后台启动 beeline -u jdbc:hive2://localhost:10000 -n root ===== SLIDE 66 ===== STEP 07 操作Hive 上述命令执行完成后,成功连接HiveServer2并进入交互界面的效果如图。 2.3 任务:基于本地模式部署Hive 2.后台启动 ===== SLIDE 67 ===== 任务:基于远程模式部署Hive 2.4 ===== SLIDE 68 ===== 2.4 任务:基于远程模式部署Hive 学习目标 掌握Hive的部署,能够完成基于远程模式部署Hive的操作。 ===== SLIDE 69 ===== 远程模式是生产环境中常见的Hive部署方式,其核心特征在于实现了服务组件的分离部署。在远程模式下,Hive的元数据仍然存储在外部关系型数据库中,但HiveServer2和Metastore均作为独立的JVM进程启动,并且部署在不同计算机上,从而实现组件解耦和资源隔离。 2.4 任务:基于远程模式部署Hive ===== SLIDE 70 ===== 接下来介绍Metastore的启动方式。与HiveServer2类似,Metastore同样支持前台启动和后台启动两种方式,具体介绍如下。 (1)前台启动Metastore的命令如下。 hive --service metastore (2)后台启动Metastore的命令如下。 hive --service metastore & 2.4 任务:基于远程模式部署Hive ===== SLIDE 71 ===== 示例命令 在实际使用中,后台启动Metastore时同样通常需配合日志重定向,将日志输出至指定文件,以便持久化存储和后续问题排查。 nohup hive --service metastore > /export/data/metastore.log 2>&1 & 2.4 任务:基于远程模式部署Hive ===== SLIDE 72 ===== 本任务演示基于远程模式部署Hive时,将通过虚拟机Node02和Node03实现,其中虚拟机Node02将重新安装Hive并启动HiveServer2,用于对外提供查询服务;虚拟机Node03将沿用前文已安装的Hive并启动Metastore,用于对外提供元数据管理服务。 2.4 任务:基于远程模式部署Hive ===== SLIDE 73 ===== 接下来,将演示如何基于远程模式部署Hive,具体操作如下。 2.4 任务:基于远程模式部署Hive ===== SLIDE 74 ===== STEP 01 启动Hadoop集群 在虚拟机Node01执行下列命令启动Hadoop集群。 2.4 任务:基于远程模式部署Hive start-dfs.sh start-yarn.sh 启动YARN集群 启动HDFS集群 ===== SLIDE 75 ===== STEP 02 在虚拟机Node03配置Hive 将已创建的Hive配置文件hive-site.xml重命名为hive-site-local.xml,使原有的Hive配置不再生效,在虚拟机Node03执行如下命令。 2.4 任务:基于远程模式部署Hive mv /export/servers/hive-4.1.0/conf/hive-site.xml \ /export/servers/hive-4.1.0/conf/hive-site-local.xml ===== SLIDE 76 ===== STEP 02 在虚拟机Node03配置Hive 在Hive安装目录的conf目录下再次编辑Hive配置文件hive-site.xml,并添加如下内容。 2.4 任务:基于远程模式部署Hive 点击查看 ===== SLIDE 77 ===== STEP 03 在虚拟机Node02安装Hive 将Hive安装包apache-hive-4.1.0-bin.tar.gz上传到虚拟机Node02的/export/software目录中。然后,将Hive安装至/export/servers目录,具体命令如下。 2.4 任务:基于远程模式部署Hive tar -zxvf /export/software/apache-hive-4.1.0-bin.tar.gz -C /export/servers/ 上述命令执行完成后,将Hive安装目录重命名为hive-4.1.0,具体命令如下。 mv /export/servers/apache-hive-4.1.0-bin/ /export/servers/hive-4.1.0 ===== SLIDE 78 ===== STEP 04 在虚拟机Node02配置Hive系统环境变量 为了便于Hive的管理和使用,需要在虚拟机Node02中配置Hive系统环境变量。在虚拟机Node02中编辑系统环境变量文件profile,具体命令如下。 2.4 任务:基于远程模式部署Hive vi /etc/profile 上述命令执行完成后,在系统环境变量文件profile的末尾添加如下内容。。 export HIVE_HOME=/export/servers/hive-4.1.0 export PATH=$HIVE_HOME/bin:$PATH 初始化虚拟机Node02的系统环境变量,需要执行source /etc/profile ===== SLIDE 79 ===== STEP 05 在虚拟机Node02配置Hive 在虚拟机Node02的Hive安装目录的conf目录下,编辑Hive配置文件hive-site.xml,具体命令如下。 2.4 任务:基于远程模式部署Hive vi /export/servers/hive-4.1.0/conf/hive-site.xml ===== SLIDE 80 ===== 2.4 任务:基于远程模式部署Hive 点击查看 STEP 05 在虚拟机Node02配置Hive 在配置文件hive-site.xml中添加如下内容。 ===== SLIDE 81 ===== STEP 06 初始化Hive元数据 在MySQL的remote数据库中完成Hive元数据的初始化操作,构建Hive运行所需的元数据表结构,在虚拟机Node03执行如下命令。 2.4 任务:基于远程模式部署Hive schematool -dbType mysql -initSchema 上述命令执行完成后,若输出“Initialization script completed”,则说明已在MySQL的remote数据库中成功完成Hive元数据的初始化。 ===== SLIDE 82 ===== STEP 07 启动Metastore 在虚拟机Node03中,以后台启动的运行方式启动Metastore,并配置日志重定向,将Metastore的日志输出到/export/data目录下的metastore.log文件中,具体命令如下。 2.4 任务:基于远程模式部署Hive nohup hive --service metastore > /export/data/metastore.log 2>&1 & ===== SLIDE 83 ===== STEP 07 启动Metastore 上述命令执行完成后的效果如图。 2.4 任务:基于远程模式部署Hive ===== SLIDE 84 ===== STEP 08 启动HiveServer2 在虚拟机Node02中,以后台启动的运行方式启动HiveServer2,并配置日志重定向,将Metastore的日志输出到/export/data目录下的hiveserver2.log文件中,具体命令如下。 2.4 任务:基于远程模式部署Hive nohup hive --service hiveserver2 > /export/data/hiveserver2.log 2>&1 & ===== SLIDE 85 ===== STEP 08 启动HiveServer2 上述命令执行完成后的效果如图。 2.4 任务:基于远程模式部署Hive ===== SLIDE 86 ===== STEP 09 操作Hive Hive客户端可在任意计算机中,通过远程连接HiveServer2操作Hive。这里为简化操作步骤并减少网络通信开销,将在虚拟机Node02中通过Beeline连接HiveServer2操作Hive。在虚拟机Node02执行如下命令。 2.4 任务:基于远程模式部署Hive beeline -u jdbc:hive2://node02:10001 -n root ===== SLIDE 87 ===== STEP 09 操作Hive 上述命令执行完成后,成功连接HiveServer2并进入交互界面的效果如图。 2.4 任务:基于远程模式部署Hive ===== SLIDE 88 ===== 任务:配置Hive On Tez 2.5 ===== SLIDE 89 ===== 2.5 任务:配置Hive On Tez 学习目标 掌握Hive On Tez,能够独立完成Tez的安装并将其配置为Hive的执行引擎。 ===== SLIDE 90 ===== Hive On Tez指的是将Tez作为Hive的执行引擎。Tez是Hadoop生态系统中的高性能分布式计算框架,其核心设计理念是提供一个通用的有向无环图(Directed Acyclic Graph,DAG)执行引擎,支持将复杂的数据处理任务表示为多个相互依赖的任务节点,实现整体协同执行。 2.5 任务:配置Hive On Tez ===== SLIDE 91 ===== 相比MapReduce,Tez在任务执行层面具有显著优势。它通过有向无环图模型以更细粒度和更高灵活性组织计算逻辑,在内存中进行任务间数据传输,显著降低磁盘和网络I/O的开销。Tez不仅大幅提升了任务执行效率,还提高了资源利用率,特别适用于复杂、多阶段的大数据分析任务。 2.5 任务:配置Hive On Tez ===== SLIDE 92 ===== 在Hive 4.1.0之前,虽然官方推荐将执行引擎替换为Tez以显著提升查询性能,但默认执行引擎仍为MapReduce。自Hive 4.1.0起,默认执行引擎已更改为Tez。 2.5 任务:配置Hive On Tez ===== SLIDE 93 ===== 当Hive使用Tez作为执行引擎时,需要在HiveServer2所在服务器安装Tez,以便将Hive客户端提交的HiveQL语句转换为有向无环图并提交至YARN集群运行。同时,为确保各NodeManager在执行Tez任务时能够访问所需依赖库,还必须将Tez的相关库上传到HDFS。 2.5 任务:配置Hive On Tez ===== SLIDE 94 ===== 本书使用的Tez版本为0.10.5,以确保与Hive 4.1.0的兼容性。接下来,将以远程模式部署的Hive为例,演示Tez的安装,具体操作步骤如下。 2.5 任务:配置Hive On Tez ===== SLIDE 95 ===== STEP 01 启动Hadoop集群 在虚拟机Node01执行下列命令启动Hadoop集群。 start-dfs.sh start-yarn.sh 启动YARN集群 启动HDFS集群 2.5 任务:配置Hive On Tez ===== SLIDE 96 ===== STEP 02 上传Tez安装包 将Tez安装包apache-tez-0.10.5-bin.tar.gz上传到虚拟机Node02的/export/software目录中。 2.5 任务:配置Hive On Tez STEP 03 安装Tez 将Tez安装至虚拟机Node02的/export/servers目录,具体命令如下。 tar -zxvf /export/software/apache-tez-0.10.5-bin.tar.gz -C /export/servers/ ===== SLIDE 97 ===== STEP 04 重命名目录 将Tez的安装目录重命名为tez-0.10.5,具体命令如下。 2.5 任务:配置Hive On Tez mv /export/servers/apache-tez-0.10.5-bin/ /export/servers/tez-0.10.5 ===== SLIDE 98 ===== STEP 05 配置Tez系统环境变量 为了便于Tez的管理和使用,需要在虚拟机Node02中配置Tez系统环境变量。在虚拟机Node02中编辑系统环境变量文件profile,具体命令如下。 2.5 任务:配置Hive On Tez vi /etc/profile 上述命令执行完成后,在系统环境变量文件profile的末尾添加如下内容。 export TEZ_HOME=/export/servers/tez-0.10.5 export HADOOP_CLASSPATH=$TEZ_HOME/*:$TEZ_HOME/lib/*:$HADOOP_CLASSPATH ===== SLIDE 99 ===== STEP 06 初始化系统环境变量 初始化虚拟机的系统环境变量,使系统环境变量文件profile中添加的内容生效,在虚拟机Node02执行如下命令。 2.5 任务:配置Hive On Tez STEP 07 在HDFS创建目录 在HDFS创建用于存放Tez相关库的目录/apps/tez,在虚拟机Node02执行如下命令。 hdfs dfs -mkdir -p /apps/tez source /etc/profile ===== SLIDE 100 ===== STEP 08 上传Tez 在Tez安装目录的share目录中,包含一个名为tez.tar.gz的压缩归档文件,该文件整合了Tez所需的全部依赖库。当YARN集群在执行Tez任务时,会在启动ApplicationMaster和各个Container的NodeManager节点上,将压缩归档文件tez.tar.gz进行本地化并解压,以确保任务运行时能够访问所需的Tez库。 将压缩归档文件tez.tar.gz上传到HDFS的目录/apps/tez中,在虚拟机Node02执行如下命令。 2.5 任务:配置Hive On Tez hdfs dfs -put /export/servers/tez-0.10.5/share/tez.tar.gz /apps/tez ===== SLIDE 101 ===== STEP 09 修改Hive配置文件 在虚拟机Node02的/export/servers/hive-4.1.0/conf目录中,编辑Hive配置文件hive-site.xml,在该文件的标签中添加如下配置。 2.5 任务:配置Hive On Tez tez.lib.uris hdfs://node01:8020/apps/tez/tez.tar.gz 配置压缩归档文件tez.tar.gz的路径 ===== SLIDE 102 ===== STEP 10 启动MetaStore 在虚拟机Node03中,以后台启动的运行方式启动Metastore,并配置日志重定向,将Metastore的日志输出到/export/data目录下的metastore.log文件中,具体命令如下。 2.5 任务:配置Hive On Tez nohup hive --service metastore > /export/data/metastore.log 2>&1 & 若执行此步操作之前Metastore已启动,则需要关闭Metastore后重新启动。 ===== SLIDE 103 ===== STEP 11 启动HiveServer2 在虚拟机Node02中,以后台启动的运行方式启动HiveServer2,并配置日志重定向,将HiveServer2的日志输出到/export/data目录下的hiveserver2.log文件中,具体命令如下。 2.5 任务:配置Hive On Tez nohup hive --service hiveserver2 > /export/data/hiveserver2.log 2>&1 & 若执行此步操作之前HiveServer2已启动,则需要关闭HiveServer2后重新启动。 ===== SLIDE 104 ===== STEP 12 测试执行引擎 在Hive的default数据库中新建表users并插入数据,具体步骤如下。 (1)在虚拟机Node02中通过Beeline连接HiveServer2操作Hive,具体命令如下。 2.5 任务:配置Hive On Tez beeline -u jdbc:hive2://node02:10001 -n root ===== SLIDE 105 ===== STEP 12 测试执行引擎 (2)在Hive的default数据库中新建表users,具体HiveQL语句如下。 2.5 任务:配置Hive On Tez CREATE TABLE IF NOT EXISTS users ( user_id INT, username STRING, email STRING, gender STRING, age INT, registration_date STRING ); ===== SLIDE 106 ===== STEP 12 测试执行引擎 (3)向表users插入数据,具体HiveQL语句如下。 2.5 任务:配置Hive On Tez INSERT INTO TABLE users VALUES (1,'zhangsan','zhangsan@example.com','male',25,'2025-01-15'), (2,'lisi','lisi@example.com','female',30,'2025-02-20'), (3,'wangwu','wangwu@example.com','male',28,'2025-03-05'), (4,'zhaoliu','zhaoliu@example.com','female',22,'2025-04-18'), (5,'qianqi','qianqi@example.com','male',35,'2025-05-22'), (6,'sunba','sunba@example.com','female',27,'2025-06-30'); ===== SLIDE 107 ===== STEP 12 测试执行引擎 上述命令执行完成后的效果如图。 2.5 任务:配置Hive On Tez ===== SLIDE 108 ===== 任务:使用DataGrip操作Hive 2.6 ===== SLIDE 109 ===== 2.6 任务:使用DataGrip操作Hive 学习目标 了解使用DataGrip操作Hive的方法,能够使用DataGrip连接HiveServer2实现对Hive的访问与操作。 ===== SLIDE 110 ===== DataGrip是由JetBrains公司开发的一款专业的跨平台数据库管理工具,广泛用于SQL查询、数据库管理和数据分析等场景。它支持多种主流数据库系统,包括MySQL、Oracle、SQL Server等,同时也原生支持包括Hive、Clickhouse在内的大数据分析平台。 2.6 任务:使用DataGrip操作Hive ===== SLIDE 111 ===== DataGrip拥有现代化的用户界面和丰富的功能集,为数据分析人员、数据库管理员以及开发者提供统一的操作环境,便于高效管理数据库对象、执行查询、可视化数据以及进行数据库建模与设计。 2.6 任务:使用DataGrip操作Hive ===== SLIDE 112 ===== 针对Hive,DataGrip提供了原生的JDBC连接支持,用户可直接通过DataGrip连接HiveServer2,便捷地访问和操作Hive中的数据。在可视化界面与强大功能的辅助下,显著提升了Hive的使用效率与体验。 2.6 任务:使用DataGrip操作Hive ===== SLIDE 113 ===== 本书使用DataGrip的版本为2025.1.3,演示如何使用DataGrip连接虚拟机Node02中启动的HiveServer2,从而实现对Hive中数据的访问与操作,操作步骤如下。 2.6 任务:使用DataGrip操作Hive ===== SLIDE 114 ===== STEP 01 在DataGrip的主界面依次单击“文件”→“新建”→“数据源”→“Apache Hive”选项,打开“数据源和驱动程序”窗口新建连接,如图。 2.6 任务:使用DataGrip操作Hive STEP 02 单击“下载”选项,下载Hive的驱动程序文件。 ===== SLIDE 115 ===== STEP 03 在“数据源和驱动程序”窗口配置HiveServer2的连接信息。首先,在“名称”输入框中设置连接名称为MyHive。接着,在“主机”输入框中设置HiveServer2绑定的IP地址为192.168.121.133。然后,在“端口”输入框中设置HiveServer2监听的端口为10001。最后,在“用户”输入框中设置用户为root。“数据源和驱动程序”窗口配置完成后的效果如图。 2.6 任务:使用DataGrip操作Hive ===== SLIDE 116 ===== STEP 04 单击“架构”选项卡,并勾选其中的“所有架构”复选框,即可使当前创建的连接获取Hive中的所有数据库。否则,将默认仅连接到default数据库,如图。 2.6 任务:使用DataGrip操作Hive ===== SLIDE 117 ===== STEP 05 单击“测试连接”选项,验证当前创建的连接是否能够成功连接至指定的HiveServer2,如图。 2.6 任务:使用DataGrip操作Hive ===== SLIDE 118 ===== STEP 06 单击“确定”按钮以保存连接设置并返回DataGrip主界面。此时,将基于名为MyHive的连接配置,自动连接至虚拟机Node02中启动的HiveServer2,如图。 2.6 任务:使用DataGrip操作Hive ===== SLIDE 119 ===== STEP 07 在名为console的SQL文件中输入查询表users所有数据的HiveQL语句并运行,如图。 2.6 任务:使用DataGrip操作Hive ===== SLIDE 120 ===== AI助学 学完本单元后,读者已经初步了解Hive的部署方式、访问工具和执行引擎配置方法。然而,在实际部署和使用Hive时,仍可能遇到服务启动、客户端连接或任务执行等问题。此时,可借助AI分析报错信息和环境配置,帮助判断可能原因,并梳理排查思路。 AI 助 学 ===== SLIDE 121 ===== 单元总结 本单元主要讲解了Hive部署与应用。首先,介绍了Hive客户端工具Beeline的基本概念与使用方法。接着,详细说明了基于不同模式部署Hive的方法,包括内嵌模式、本地模式和远程模式。然后,重点介绍了Hive On Tez的原理与配置方法。最后,介绍了使用DataGrip操作Hive的方法。通过本单元的学习,读者能够根据实际需求灵活选择并部署不同模式的Hive环境,掌握多种客户端工具的使用方法,为后续Hive数据仓库的构建与综合应用打下坚实基础。 单 元 总 结